//1. 在小程序中必须使用https接口,并且不能使用ip地址为域名
//2. 当在开发阶段有可能使用以上情况的接口地址
//解决方案
// 1. 打开小程序开发工具的 详情-->本地设置--> 不校验合法域名xxx 打上对勾
// 当使用此设置时, 小程序可以向任意地址发送请求
// 2. 打开微信小程序管理平台 登录之后 在左侧选择 开发-->开发管理-->开发设置 -->服务器域名-->点击修改 -->按照提示信息 加注合法域名

// wx.request({
//   url: 'test.php', //仅为示例，并非真实的接口地址
//   data: {}, //向后段发送的数据
//   header: { //请求头信息
//     'content-type': 'application/json' // 默认值
//   },
//   success (res) {//请求成功后的回调
//     console.log(res.data)
//   },
//   fail(err){//接口调用失败的回调函数

//   },
//   complete(){//无论成功还是失败都会调用

//   }
// })
//异步封装解决方法都有那些
// promise  async/await 回调函数  订阅发布  事件监听


const baseUrl = "https://api-hmugo-web.itheima.net/api/public/v1/"
let ajaxConter = 0;
//使用promise

// {
//       url: "my/orders/chkOrder",
//       method: "POST",
//       data: data,
//       header: {a:123}
// }
const request = function (opations) {
      ajaxConter++;
      wx.showLoading({
        title: '正在加载...',
        mask: true
      })
      
      if(opations.url.includes("my/")){
            opations.header = {
                  ...opations.header,
                  Authorization: wx.getStorageSync('token')
            };
      }
      opations.url = baseUrl + opations.url;  //https://api-hmugo-web.itheima.net/api/public/v1/ + my/orders/create
      return new Promise((resolve, reject) => {
            wx.request({
                  ...opations,
                  timeout: 5000,
                  success: (result) => {
                        resolve(result)
                  },
                  fail: (err) => {
                        reject(err)
                  },
                  complete: ()=>{
                        //在全局自定义一个ajaxConter计数器,来表示某一时段一共发送了多少个ajax
                        //每发送一个ajax就让conter++,
                        //每完成一个ajax 就让conter--
                        //当conter为0 的时候 则表示目前时段没有要发送和等待接受的请求了,然后再去关闭loading效果
                        ajaxConter--;
                        if(ajaxConter === 0){
                              wx.hideLoading()
                        }
                  }
            })
      })
}
const homeApi = {
      getSwiperData: function(){
            return request({
                  url: "home/swiperdata"
            })
      },
      getCatitems: function(data){
            return request({
                  url: "home/catitems"
                  // method: "POST",
                  // data: data
            })
      }
}
const categoriesApi = {
      getCategories: function(){
            return request({
                  url: "categories"
            })
      }
};
const goodsApi = {
      //商品列表搜索
      getGoodsList:function(data){
            return request({
                  url: "goods/search",
                  data: data
            })
      },
      //获取商品详情  
      //不管是get还是post请求,都需要把请求参数数据放到data中
      getGoodsDetail:function(data){
            return request({
                  url: "goods/detail",
                  data: data
            })
      },
      //根据关键字搜索商品
      getGoodsSearch:function(data){
            return request({
                  url: "goods/qsearch",
                  data: data
            })
      },
};

const usersApi = {
      //获取token值
      wxlogin: function(data){
            return request({
                  url: "users/wxlogin",
                  method: "POST",
                  data: data
            })
      },
}

//定单接口
const myApi = {
      //创建订单接口
          /**
       * 1. 创建订单
       *    1. 请求地址 /my/orders/create
       *    2. 请求方式POST
       *    3. 请求参数
       *          1. 请求头 Authorization  token
       *          2. order_price,consignee_addr,goods
       */
      createOrder: function(data){
            return request({
                  url: "my/orders/create",
                  method: "POST",
                  data: data
            })
      },
      //获取支付参数
      reqUnifiedorder: function(data){
            return request({
                  url: "my/orders/req_unifiedorder",
                  method: "POST",
                  data: data
            })
      },
      //查看订单支付状态
      checkOrder: function(data){
            return request({
                  url: "my/orders/chkOrder",
                  method: "POST",
                  data: data,
                  header: {a:123}
            })
      },
}
const API = {
      homeApi,
      categoriesApi,
      goodsApi,
      usersApi,
      myApi
}

export default API

// export default request
